package leetcode_双指针;

/**
 * 接雨水
 * 算法：双指针
 *
 * 当前位置能接多少水, 取决于该位置前的最大高度和后的最大高度
 *
 * @author yezh
 * @date 2023/12/27 22:56
 */
public class _42 {

    public int trap(int[] height) {
        int ans = 0, lMax = 0, rMax = 0;
        int l = 0, r = height.length - 1;
        while (l < r) {
            lMax = Math.max(lMax, height[l]);
            rMax = Math.max(rMax, height[r]);
            if (lMax < rMax) {
                // 左边的最大值比右边小, 表示当前位置能接的水取决于左边
                ans += lMax - height[l];
                ++l;
            } else {
                ans += rMax - height[r];
                --r;
            }
        }
        return ans;
    }

}
